<html>
<head>
<title>
Netlab Reference Manual mdn
</title>
</head>
<body>
<H1> mdn
</H1>
<h2>
Purpose
</h2>
Creates a Mixture Density Network with specified architecture.

<p><h2>
Synopsis
</h2>
<PRE>
net = mdn(nin, nhidden, ncentres, dimtarget)
net = mdn(nin, nhidden, ncentres, dimtarget, mixtype, ...
	prior, beta)
</PRE>


<p><h2>
Description
</h2>
<CODE>net = mdn(nin, nhidden, ncentres, dimtarget)</CODE> takes the number of 
inputs, 
hidden units for a 2-layer feed-forward 
network and the number of centres and target dimension for the 
mixture model whose parameters are set from the outputs of the neural network.
The fifth argument <CODE>mixtype</CODE> is used to define the type of mixture
model.  (Currently there is only one type supported: a mixture of Gaussians with
a single covariance parameter for each component.) For this model,
the mixture coefficients are computed from a group of softmax outputs,
the centres are equal to a group of linear outputs, and the variances are 
obtained by applying the exponential function to a third group of outputs.

<p>The network is initialised by a call to <CODE>mlp</CODE>, and the arguments
<CODE>prior</CODE>, and <CODE>beta</CODE> have the same role as for that function.
Weight initialisation uses the Matlab function <CODE>randn</CODE>
 and so the seed for the random weight initialization can be 
set using <CODE>randn('state', s)</CODE> where <CODE>s</CODE> is the seed value.
A specialised data structure (rather than <CODE>gmm</CODE>)
is used for the mixture model outputs to improve
the efficiency of error and gradient calculations in network training.
The fields are described in <CODE>mdnfwd</CODE> where they are set up.

<p>The fields in <CODE>net</CODE> are
<PRE>
  
  type = 'mdn'
  nin = number of input variables
  nout = dimension of target space (not number of network outputs)
  nwts = total number of weights and biases
  mdnmixes = data structure for mixture model output
  mlp = data structure for MLP network
</PRE>


<p><h2>
Example
</h2>
<PRE>

net = mdn(2, 4, 3, 1, 'spherical');
</PRE>

This creates a Mixture Density Network with 2 inputs and 4 hidden units.
The mixture model has 3 components and the target space has dimension 1.

<p><h2>
See Also
</h2>
<CODE><a href="mdnfwd.htm">mdnfwd</a></CODE>, <CODE><a href="mdnerr.htm">mdnerr</a></CODE>, <CODE><a href="mdn2gmm.htm">mdn2gmm</a></CODE>, <CODE><a href="mdngrad.htm">mdngrad</a></CODE>, <CODE><a href="mdnpak.htm">mdnpak</a></CODE>, <CODE><a href="mdnunpak.htm">mdnunpak</a></CODE>, <CODE><a href="mlp.htm">mlp</a></CODE><hr>
<b>Pages:</b>
<a href="index.htm">Index</a>
<hr>
<p>Copyright (c) Ian T Nabney (1996-9)
<p>David J Evans (1998)

</body>
</html>